/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Cliente.Model;

import Cliente.Entidade.Cliente;
import acessoBD.AcessoBD;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Caio Valentim
 */
public class PesquisarPaciente {
    private PreparedStatement ps;
    private Connection con;
    private ResultSet rs;
    private final AcessoBD acessoBD = new AcessoBD();
    private final String consultaClienteNome = "select * from cliente where cliente.nome like ?";
    private final String buscaPacienteSexo ="select * from cliente where cliente.sexo like ?";
    private final String consultaClienteCPF = "select * from cliente where cliente.cpf like ?";
    private final String listarClientes= "select * from cliente";
    
    public boolean consultaCliente(String cpf) {
        boolean flag = false;
        try {
            con = acessoBD.conectar();
            ps = con.prepareStatement(consultaClienteCPF);
            ps.setString(1, cpf);
            rs = ps.executeQuery();
            if (rs.next()) {
                flag = true;
            }
            acessoBD.desconectar();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return flag;
    }
    
     
    public List <Cliente> consultaClienteNome(String nome){
         List<Cliente> listaClientes = new ArrayList<Cliente>();
         Cliente cliente;
         try {
            con = acessoBD.conectar();
            ps = con.prepareStatement(consultaClienteNome);
            nome = nome + "%";
            ps.setString(1, nome);
            rs = ps.executeQuery();
            while (rs.next()) {
                cliente = new Cliente();
                cliente.setId(rs.getInt("id"));
                cliente.setNome(rs.getString("nome"));
                cliente.setCpf(rs.getString("cpf"));
                cliente.setAltura(Double.parseDouble(rs.getString("altura")));
                cliente.setSexo(rs.getString("sexo"));               
                cliente.setIdade(Integer.parseInt(rs.getString("idade")));
                cliente.setPeso(Double.parseDouble(rs.getString("peso"))); 
                cliente.setIAC(rs.getString("iac"));               
                cliente.setIMC(rs.getString("imc"));
                cliente.setQuadril(rs.getDouble("quadril"));
                cliente.setCintura(rs.getDouble("cintura"));
                cliente.setRCQ(rs.getString("rcq"));
                cliente.setConsultado(rs.getString("consultado"));
                listaClientes.add(cliente);
            }
            acessoBD.desconectar();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return listaClientes;
    }
    
    
    public List <Cliente> buscaPacienteSexo(String sexo){
         List<Cliente> listaClientes = new ArrayList<Cliente>();
         Cliente cliente;
         try {
            con = acessoBD.conectar();
            ps = con.prepareStatement(buscaPacienteSexo);
            
            ps.setString(1, sexo);
            rs = ps.executeQuery();
            while (rs.next()) {
                cliente = new Cliente();
                cliente.setId(rs.getInt("id"));
                cliente.setNome(rs.getString("nome"));
                cliente.setCpf(rs.getString("cpf"));
                cliente.setAltura(Double.parseDouble(rs.getString("altura")));
                cliente.setSexo(rs.getString("sexo"));               
                cliente.setIdade(Integer.parseInt(rs.getString("idade")));
                cliente.setPeso(Double.parseDouble(rs.getString("peso"))); 
                cliente.setIAC(rs.getString("iac"));               
                cliente.setIMC(rs.getString("imc"));
                cliente.setQuadril(rs.getDouble("quadril"));
                cliente.setCintura(rs.getDouble("cintura"));
                cliente.setRCQ(rs.getString("rcq"));
                cliente.setConsultado(rs.getString("consultado"));
                listaClientes.add(cliente);
            }
            acessoBD.desconectar();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return listaClientes;
    }
    
    public List <Cliente> consultaClienteCPF(String cpf){
         List<Cliente> listaClientes = new ArrayList<Cliente>();
         Cliente cliente;
         try {
            con = acessoBD.conectar();
            ps = con.prepareStatement(consultaClienteCPF);
            ps.setString(1, cpf);
            rs = ps.executeQuery();
            while (rs.next()) {
                cliente = new Cliente();
                cliente.setId(rs.getInt("id"));
                cliente.setNome(rs.getString("nome"));
                cliente.setCpf(rs.getString("cpf"));
                cliente.setAltura(Double.parseDouble(rs.getString("altura")));
                cliente.setSexo(rs.getString("sexo"));               
                cliente.setIdade(Integer.parseInt(rs.getString("idade")));
                cliente.setPeso(Double.parseDouble(rs.getString("peso"))); 
                cliente.setIAC(rs.getString("iac"));               
                cliente.setIMC(rs.getString("imc"));
                cliente.setQuadril(rs.getDouble("quadril"));
                cliente.setCintura(rs.getDouble("cintura"));
                cliente.setRCQ(rs.getString("rcq"));
                cliente.setConsultado(rs.getString("consultado"));
                listaClientes.add(cliente);
            }
            acessoBD.desconectar();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return listaClientes;
    }
    
    public ArrayList <Cliente> listarClientes(){
         ArrayList<Cliente> listaClientes = new ArrayList<Cliente>();
         Cliente cliente;
            try {
            con = acessoBD.conectar();
            ps = con.prepareStatement(listarClientes);
            rs = ps.executeQuery();
            while (rs.next()) {
                cliente = new Cliente();
                cliente.setId(rs.getInt("id"));
                cliente.setCpf(rs.getString("cpf"));
                cliente.setNome(rs.getString("nome"));
                cliente.setAltura(rs.getDouble("altura"));
                cliente.setSexo(rs.getString("sexo"));
                cliente.setIdade(rs.getInt("idade"));
                cliente.setPeso(rs.getDouble("peso"));
                cliente.setIAC(rs.getString("iac"));
                cliente.setIMC(rs.getString("imc"));
                cliente.setCintura(rs.getDouble("cintura"));
                cliente.setQuadril(rs.getDouble("quadril"));
                cliente.setRCQ(rs.getString("rcq"));
                cliente.setConsultado(rs.getString("consultado"));
                listaClientes.add(cliente);
            }
            acessoBD.desconectar();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return listaClientes;
    }
    
    public int consultaNumeroPaciente(){
       int cont = 0;
       try{
           con = acessoBD.conectar();
           ps = con.prepareStatement(listarClientes);
           rs = ps.executeQuery();
           while (rs.next()){
               cont++;
           }
           acessoBD.desconectar();
       }catch (Exception e){
           e.printStackTrace();
       }
       return cont;
    }
   
    
    
}
